Improvement/scroll fade table - #1072
Conversation
Hello jeanmarcmilletscality,My role is to assist you with the merge of this Available options
Available commands
Status report is not available. |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
Peer approvals must include at least 1 approval from the following list: |
9a92fd0 to
ac9e2e5
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
Peer approvals must include at least 1 approval from the following list: |
| ref={ref} | ||
| {...props} | ||
| style={{ ...props.style, scrollBehavior: 'smooth' }} | ||
| className="scroll-fade" |
There was a problem hiding this comment.
className="scroll-fade" placed after {...props} silently overrides any className that react-window forwards to the outer element. FixedSizeList passes its own className prop through to outerElementType — currently the <List> here doesn't set one, but this will break silently if it ever does. Merge instead of replace, consistent with how style is already handled on the line above.
| className="scroll-fade" | |
| className={`scroll-fade${props.className ? ` ${props.className}` : ''}`} |
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ac9e2e5 to
0180bfa
Compare
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
Peer approvals must include at least 1 approval from the following list: |
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
Peer approvals must include at least 1 approval from the following list: |
ConflictThere is a conflict between your branch Please resolve the conflict on the feature branch ( git fetch && \
git checkout origin/improvement/scroll-fade-table && \
git merge origin/development/1.0Resolve merge conflicts and commit git push origin HEAD:improvement/scroll-fade-table |
…t/scroll-fade-table # Conflicts: # .storybook/preview.tsx
Waiting for approvalThe following approvals are needed before I can proceed with the merge:
Peer approvals must include at least 1 approval from the following list: |
|
/approve |
|
I have successfully merged the changeset of this pull request
Please check the status of the associated issue None. Goodbye jeanmarcmilletscality. The following options are set: approve |
TL;DR
Tablev2 now shows a subtle bottom fade while its body scrolls — a cue that there's more content below — which auto-hides once you reach the end. Storybook is also wrapped in
ScrollbarWrapperso the effect renders in stories.Context
core-ui already ships a
.scroll-fadeCSS utility (inScrollbarWrapper) that gives any scrollable element an auto-hiding bottom fade — but nothing applied it. This turns it on for tables, so long lists get a "more below" affordance instead of a hard-cut edge.Screenshots
Left → right: today's hard-cut edge; the new bottom fade while scrolling (note
FirstName9softening at the edge); and the fade auto-hidden once the last row is reached. Chromium only — the effect is gated behind@supports (animation-timeline: scroll()), so Firefox/Safari stable render the table with no fade.Review focus
tablev2/TableCommon.tsx › SmoothScrollDiv— the fade is applied to the shared virtualized scroll container, so it turns on for every Tablev2 table at once (not per-instance opt-in). Visual-only and it degrades gracefully: the effect is behind@supports (animation-timeline: scroll()), so Chromium shows the fade and Firefox/Safari stable simply render the table with no fade (no breakage).classNameis merged with any forwarded value (['scroll-fade', props.className].filter(Boolean).join(' ')) rather than replacing it, mirroring howstyleis already merged on the line above — so a futureclassNamefrom react-window's<List>isn't clobbered..storybook/preview.tsx— Storybook-only. Wraps stories inScrollbarWrapper(which injects the@property/keyframes the utility needs); no effect on shipped code.How to test
npm run storybook(port 3001).